/*
 * Copyright (C) 2008 Alessandro Sivieri <alessandro.sivieri@chimera-bellerofonte.eu>.
 *
 *  This file is part of Daex.
 *
 *  Daex is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  Foobar is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 */
package eu.chimera_bellerofonte.tesi.encoding;

import eu.chimera_bellerofonte.tesi.datatypes.Dvd;
import eu.chimera_bellerofonte.tesi.datatypes.Song;

/**
 * Questa classe e' l'oggetto utilizzato dal sistema per ottenere tutte
 * le informazioni di ripping da passare al sistema di esecuzione dei
 * programmi esterni; riunisce al suo interno le informazioni di encoding,
 * le directory da utilizzare e l'album con le relative informazioni.
 * <br>
 * Si tratta dell'implementazione di default di EncodingList.
 * 
 * @author  Sivieri Alessandro
 * @author  Vitucci Nicola
 * @version  20/apr/07
 */
public class DefaultEncodingList implements EncodingList
{
	/**
	 * @uml.property  name="encoders"
	 * @uml.associationEnd  multiplicity="(0 -1)"
	 */
	private Song[] songs=null;
	private int dvdTitle=0;
	private Dvd dvd=null;
	private String outDirectory=null;
	private String tempDirectory=null;
	
	/**
	 * Costruttore; setta i parametri di classe con i valori indicati.
	 * 
	 * @param songs le tracce da codificare
	 * @param dvdIface il dvd in uso
	 * @param dvd la traccia utilizzata
	 * @param outDirectory la directory in cui inserire le tracce finite
	 */
	public DefaultEncodingList(Song[] songs, Dvd dvdIface, int dvd, String outDirectory)
	{
		this.songs = songs;
		this.dvd=dvdIface;
		this.dvdTitle = dvd;
		this.outDirectory = outDirectory;
		this.tempDirectory = "";
	}
	
	/**
	 * Costruttore; setta i parametri di classe con i valori indicati.
	 * 
	 * @param songs le canzoni da codificare
	 * @param dvdIface il dvd in uso
	 * @param dvd la traccia utilizzata
	 * @param outDirectory la directory in cui inserire le tracce finite
	 * @param tempDirectory la directory temporanea
	 */
	public DefaultEncodingList(Song[] songs, Dvd dvdIface, int dvd, String outDirectory, String tempDirectory)
	{
		this.songs = songs;
		this.dvd=dvdIface;
		this.dvdTitle = dvd;
		this.outDirectory = outDirectory;
		this.tempDirectory = tempDirectory;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.EncodingList#getDvdTitle()
	 */
	public int getDvdTitle()
	{
		return dvdTitle;
	}

	/**
	 * Questo metodo setta dvd con il valore dato.
	 * @param dvd  il nuovo valore per questo campo
	 * @uml.property  name="dvd"
	 */
	public void setDvdTitle(int dvd)
	{
		this.dvdTitle = dvd;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.EncodingList#getOutDirectory()
	 */
	public String getOutDirectory()
	{
		return outDirectory;
	}

	/**
	 * Questo metodo setta outDirectory con il valore dato.
	 * @param outDirectory  il nuovo valore per questo campo
	 * @uml.property  name="outDirectory"
	 */
	public void setOutDirectory(String outDirectory)
	{
		this.outDirectory = outDirectory;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.EncodingList#getTempDirectory()
	 */
	public String getTempDirectory()
	{
		return tempDirectory;
	}

	/**
	 * Questo metodo setta tempDirectory con il valore dato.
	 * @param tempDirectory  il nuovo valore per questo campo
	 * @uml.property  name="tempDirectory"
	 */
	public void setTempDirectory(String tempDirectory)
	{
		this.tempDirectory = tempDirectory;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.EncodingList#getSongList()
	 */
	public Song[] getSongList()
	{
		return songs;
	}

	/**
	 * Metodo per settare la lista di canzoni da codificare con questo encoder.
	 * @param songs  le canzoni da codificare
	 */
	public void setSongList(Song[] songs)
	{
		this.songs=songs;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.EncodingList#getDvd()
	 */
	public Dvd getDvd()
	{
		return dvd;
	}

}
